17386
283
Я лише новачок у кодуванні Swift. Моя ідея досить проста - це програма з двома кнопками. При натисканні текстове поле змінить свій текст.
У Main.StoryBoard я додаю текстове поле та дві кнопки.
У файлі ViewController.swift. Я пишу так:
імпортувати UIKit
клас ViewController: UIViewController {
@IBOutlet слабке текстове поле var: UITextField!
@IBOutlet слабка кнопка змінної: UIButton!
@IBOutlet слабкий var button2: UIButton!
@IBAction func action1 (_ sender: UIButton) {
textfield.text = "Ви щойно натиснули кнопку1"
}
@IBAction func action2 (_ відправник: UIButton) {
textfield.text = "Ви щойно натиснули кнопку2"
}
}
Нібито все гаразд. Однак з'являється помилка, яка показує:
thread1: сигнал SIGABRT
у файлі AppDelegate.swift рядок:
клас AppDelegate: UIResponder, UIApplicationDelegate
Що не так з моїм кодом? 
Щоб вирішити проблему, спочатку очистіть проект, а потім відновіть.
Щоб очистити проект, перейдіть до MenuBar: Product -> Clean
Потім, щоб відновити проект, просто натисніть кнопку Запустити, як зазвичай.
|
Ви отримуєте помилку SIGABRT щоразу, коли у вас відключена розетка. Клацніть на контролері перегляду в розкадруванні та перейдіть до з'єднань на бічній панелі (символ стрілки). Подивіться, чи є у вас там додаткова торгова точка, дублікат або додаткова, яка не підключена. Якщо це не так, можливо, ви неправильно підключили свої торгові точки до свого коду.
Тільки пам’ятайте, що SIGABRT трапляється, коли ви намагаєтесь зателефонувати до торгової точки (кнопки, подання, текстового поля тощо), якої там немає.
|
Для мене це не було виходом. Я вирішив проблему, перейшовши до помилки та прочитавши, що там сказано. (Також Нуб ..)
Це була помилка:
І рішення було тут:
Просто прокрутіть угору вихідні дані, і помилка виявиться.
|
Поширеною причиною такого типу помилок є те, що ви могли змінити назву вашого IBOutlet або IBAction, ви можете просто перевірити це, перейшовши до вихідного коду.
Клацніть на main.storyboard, а потім виберіть відкрити як
а потім виберіть вихідний код
відкриється вихідний код
а потім перевірте, чи є ім'я iboutlet або ibaction, яке ви змінили, якщо є, тоді виберіть частину та видаліть її, а потім знову створіть iboutlet або ibaction.
Це має вирішити вашу проблему
|
У моєму випадку я не отримував помилки, просто збій в AppDelegate, і мені довелося зняти наступний параметр: OS_ACTIVITY_MODE, тоді я міг отримати справжню причину збою у своєму файлі .xib
Сподіваюся, це може допомогти і вам :)
|
У мене була та сама проблема. Я зробив кнопку в раскадровці і підключив її до ViewController, а потім згодом видалив цю кнопку. Отже, зв’язок все ще існував, але кнопка не була, і тому я отримав таку ж помилку, як і ви.
Виправити:
Перейдіть до інспектора з’єднань (стрілка у верхньому правому куті на вашій розкадровці) і видаліть усі невикористані з’єднання.
|
Якщо ви натрапите на це в Xcode 10, вам доведеться почистити перед збіркою. Або перейдіть до застарілої системи збірки. Файл -> Налаштування робочої області ... -> Система побудови: застаріла система побудови.
|
У моєму випадку журналу взагалі не було.
Моєю помилкою було натискання контролера перегляду в навігаційному стеку, який уже був частиною навігаційного стека.
|
Іноді це також трапляється, коли функцію потрібно виконувати лише в основному потоці, тому ви можете виправити її, призначивши її основному потоку наступним чином: -
DispatchQueue.main.async {
ваш код тут
}
|
Для мене ця помилка полягала в тому, що я мав крок підготовки до другого сезону, який не застосовувався до того сегменту, який робився.
довга історія:
перевизначити функцію підготовки (для segue: UIStoryboardSegue, відправника: Будь-який?) {
let gosetup = segue.destination as! Оновлення
gosetup.wherefrom = updatetestring
}
Це робилося з усіма представниками групи, коли це було лише для одного. Тож я створив логічну форму і розмістив усередині неї gosetup.
|
Це дуже поширена помилка, яка може трапитися з різних причин. Найбільш поширеним є випадки, коли IBOUTLET / IBACTION, підключений до контролера перегляду в раскадровці, видаляється із швидкого файлу, але не з розкадрування. Якщо це не так, скористайтесь журналом на нижній панелі інструментів, щоб з’ясувати помилку та діагностувати її. Ви можете використовувати точки зупинки та налагодження, щоб допомогти вам знайти помилку.
Щоб дізнатися, як виправити помилку, скористайтеся цією статтею, яку я знайшов у Google: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
У моєму випадку я використовував RxSwift для здійснення пошуку.
Я широко використовував спільний екземпляр певного класу всередині методу onNext, що, ймовірно, робило його недоступним (Mutex).
Переконайтеся, що з подібними екземплярами поводитись обережно лише в крайніх випадках.
У моєму випадку я заздалегідь використав пару змінних, щоб безпечно (і послідовно) зберігати повернені значення методів спільного екземпляра та повторно використовував їх усередині блоку onNext.
|
У мене була та сама проблема. У моєму випадку я просто переписав файл
GoogleService-Info.plist
на цьому шляху:
Платформа \ ios \ YOUR_APP_NAME \ Resources \ Resources
У моєму випадку файли були присутні без даних.
|
Високоактивне запитання. Заробіть 10 репутації, щоб відповісти на це питання. Вимога про репутацію допомагає захистити це питання від спаму та відсутності відповідей.
Не відповідь, яку ви шукаєте? Швидко перегляньте інші запитання з тегом ios або задайте власне запитання.